The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
A device driver or software driver is a computer program allowing higher-level computer programs to interact with a hardware device. In the printing context, a printer driver allows applications (e.g., Microsoft Word, Adobe Acrobat, SmartDraw, etc.) to print to a printing device without the applications being required to know the technical details of the printing device. A printer driver converts application data, from an application, to a form specific to a particular printing device.
Current printer drivers are printer specific, requiring that a separate printer driver be manually installed, on each client device, for each printing device that a user wishes to print to. The user must know the exact printer model and then download a printer driver from the manufacture for that exact model. In addition, most printer drivers do not have dynamic feature support and therefore must be updated if any changes are made to the printing devices. Some universal printer drivers exit that provide limited dynamic feature support by defining a limited set of features and then turning some features on or off through SNMP device querying. If a user moves their computing device (e.g., laptop) so that the computing devices is in a different network and the user desires to be able to print to printing devices in that different network, then the user must add more printer drivers to their computing device. As a result of installing numerous printer drivers, the user must retrieve all necessary printer information from every installed printer driver. Thus, creating a simple print job can quickly become a complicated job and result in an unfavorable user experience. Additionally, under current printer driver architectures, each printer driver displays its own user interface (UI). If user selects a different printing device, then an operating system must open a new printer driver with a different UI for that printing device.
Some current printer drivers are considered “universal” drivers in that such drivers support multiple models. However, one universal driver can only support one device at any given time. When multiple printing devices are present on one network, multiple instances of universal drivers must be installed into the operating system of a client device.
As a consequence of current printer driver architectures, if a user desires to use a printer feature (such as hole punching) and the user does not know which printing device supports that printer feature, then the user must open each printer driver's UI in order to determine which printing device is capable of that printer feature.
Some printing devices, referred to herein as “ad-hoc printing devices,” now support ad-hoc wireless communications. Ad-hoc printing devices may be very convenient in many situations. For example, ad-hoc printing devices may be installed in locations such as shopping malls and coffee shops to allow users to print “on-the-go” from mobile computing devices, such as smart phones, tablet computers, laptop computers, personal digital assistants, etc. To print to an ad-hoc printing device, a user typically moves a mobile client device in close proximity to a particular ad-hoc printing device and establishes an ad-hoc communications link between the user's mobile client device and the particular ad-hoc printing device. After the ad-hoc communications link has been established, the user installs printer driver for this particular model, then the user prints and sends electronic document to the particular ad-hoc printing device.
Despite the conveniences provided by ad-hoc printing devices, there exist some drawbacks to using them. First, all of the issues described above with non-ad-hoc printing devices apply to ad-hoc printing devices. In addition, an ad-hoc communications link must be maintained until printing is completed. If a mobile client device is moved out of range of an ad-hoc printing device before a print job is completed, then the print job may abort with an error. When this occurs, the user must re-submit the entire print job to the ad-hoc printing device or locate another ad-hoc printing device. Another issue is that ad-hoc communications links are temporary and if a user wishes to print another electronic document to the same ad-hoc printing device after the ad-hoc communications link has been terminated, the user must first establish a new ad-hoc communications link to the ad-hoc printing device.
Another issue with ad-hoc printing is that it can be computationally expensive for mobile client devices that may have limited computing resources. For example, rendering large or complex electronic documents can consume a significant processing resources, storage resources and batter power.